//基础类型和变量声明

//1.基础类型
let isDone: boolean = false;
let num: number = 6;
let name: string = 'joy';
let firstname: string = 'boy';
let username: string = `my name is ${name}.${firstname}.`; //字符串支持使用通配符展示，但是字符串整体必须使用 `` 括起来。
let list: number[] = [1,2,3]; //array普通类型
let list2: Array<number> = [1,2,3];//使用范型
let x:[string,number];//元组tuple类型，元组是固定长度的数组，它允许存储多种类型的元素，但是元素的数量和类型都是固定的。
x = ['hello',1]
x[0]
enum Enum{
  RED,GREEN,YELLOW  //枚举的元素编号默认从0开始
}
//any 和 object 的区别：
// any的话，可以使用对应类型的方法，而object的话，不能调用对应类型的方式使用。比如定义的object的变量不能识别到toFixed方法。
let anyType: any = 'string message';
anyType.toFixed()
//默认情况下，null 和 undefined 是所有类型的子类型。
// 你可以把 null 和 undefined 赋值给其他类型 (比如 number) 的变量
//void表示没有任何类型。通常用于函数返回类型，表示该函数没有返回值。
//在 TypeScript 中，默认情况下变量如果没有显式赋值会被认为是 undefined。
let unusable: void = undefined
let nullType = null


//2.变量声明
//2.1 var和let
//var 声明的变量作用于全局的,对于var和let声明，尽可能多的使用let
function fun(isOk: boolean){
  if (isOk) {
    var x = 10;
  } else {
    x = 20;
  }
  return x;
}

